<?php
include_once 'aaa_regra.php';
include_once 'regras_base.php';

/**
 * Texto das regras do E-Mag
 * @author fabio.oshiro
 *
 */
class RegrasEmag extends RegrasBase{
	
	private $mapRegra = array();
	
	public function getRule($cod){
		$this->carregaRegras();
		return $this->mapRegra[$cod];
	}
	
	/**
	 * Retorna o texto da regra
	 * Ex: 2.19 
	 * @param codigo código da regra
	 * @return Texto da regra
	 */
	public function getTextoRegra($codigo){
		$this->carregaRegras();
		return $this->mapRegra[$codigo]->getTexto();
	}
	
	/**
	 * Retorna a prioridade da regra
	 * Ex: 2.19 
	 * @param codigo c�digo da regra (2.19)
	 * @return Prioridade da regra 1 2 ou 3
	 */
	public function getPrioridadeRegra($codigo){
		$this->carregaRegras();
		if(!isset($this->mapRegra[$codigo])){
			return 0;
		}else{
			return $this->mapRegra[$codigo]->getPrioridade();
		}
	}
	
	/**
	 * Carrega as regras
	 *
	 */
	public function carregaRegras(){
		//evita o carregamento mais de uma vez
		if(count($this->mapRegra)>0){
			return;
		}
		//2.15 label
		$this->mapRegra["1.1"] = new AAARegra(1,"Identificar o principal idioma utilizado nos documentos. O idioma do documento deve ser especificado na expressão HTML.",
			'http://www.w3ca.com.br/portal/acessivel/como-declarar-o-idioma',
			'Como declarar o idioma'
		);
		$this->mapRegra["1.2"] = new AAARegra(1,"Identificar claramente quaisquer mudanças de idioma no texto de um documento, bem como nos equivalentes textuais (por ex., legendas de imagens). Use o atributo \"lang\" para identificar claramente as alterações do idioma no texto.", 
		'http://www.w3ca.com.br/portal/content/identificar-mundanca-de-idioma', 
		'indentificar mundaças de idioma');
		$this->mapRegra["1.3"] = new AAARegra(1,"Fornecer meios para ignorar e explicar inserções de arte ASCII com várias linhas, tais como links de âncora ou páginas alternativas.");
		$this->mapRegra["1.4"] = new AAARegra(1,"Assegurar que todas as informações veiculadas com cor estejam também disponíveis sem cor.",
			'http://www.w3ca.com.br/portal/acessivel/como-criar-opcoes-de-cores',
			'Como criar opções de contraste'
		);
		//Geral por enquanto
		//Contraste
		$this->mapRegra["1.5"] = new AAARegra(1,"Assegurar que a combinação de cores entre o fundo e o primeiro plano seja suficientemente contrastante para poder ser vista por pessoas com cromo deficiências, bem como pelas que utilizam monitores de vídeo monocromáticos.");
		
		$this->mapRegra["1.6"] = new AAARegra(1,"Organizar os documentos de tal forma que possam ser lidos sem recurso à folhas de estilo. Por exemplo, se um documento em HTML for reproduzido sem as folhas de estilo que lhe estão associadas, deve continuar a ser possível lê-lo.");
		$this->mapRegra["1.7"] = new AAARegra(1,"Não usar concepções que possam provocar intermitência da tela, até que os leitores de tela ou navegadores do usuário possibilitem o seu controle.");
		$this->mapRegra["1.8"] = new AAARegra(1,"Criar uma seqüência lógica de tabulação para percorrer links, controles de formulários e objetos.");
		$this->mapRegra["1.9"] = new AAARegra(1,"Utilizar a linguagem mais clara e simples possível, logicamente, adequada ao conteúdo do sítio.");
		$this->mapRegra["1.10"] = new AAARegra(1,"Utilizar os mecanismos de navegação de maneira coerente, consistente e sistemática. Por exemplo, organizar itens do menu por tema, seções ou classes, etc.");
		$this->mapRegra["1.11"] = new AAARegra(1,"Fornecer um equivalente textual a cada imagem (isso abrange: representações gráficas do texto, incluindo símbolos, GIFs animados, imagens utilizadas como sinalizadores de pontos de enumeração, espaçadores e botões gráficos), para tanto, utiliza-se o atributo \"alt\" ou \"longdesc\" em cada imagem.",
			'http://www.w3ca.com.br/portal/acessivel/como-descrever-imagens',
			'Como descrever imagens'
		);
		$this->mapRegra["1.12"] = new AAARegra(1,"Fornecer links de texto redundantes relativos a cada região ativa de um mapa de imagem armazenado tanto no cliente quanto no servidor. Não esquecendo de adicionar texto equivalente à imagem mostrada, no caso o \"alt\" ou \"longdesc\".");
		$this->mapRegra["1.13"] = new AAARegra(1,"Fornecer resumos das tabelas utilizando o atributo \"summary\", caso seja criada uma tabela para dados. Se a tabela foi criada para efeito de design, deixar o \"summary\" em branco.");
		$this->mapRegra["1.14"] = new AAARegra(1,"Em tabelas de dados com dois ou mais níveis lógicos de cabeçalhos, sejam de linha ou de coluna, utilizar marcações para associar as células de dados às células de cabeçalho. Organize tabelas complexas de forma que possa identificar facilmente suas divisões.");
		$this->mapRegra["1.15"] = new AAARegra(1,"Assegurar que os equivalentes de conteúdo dos frames (dinâmico ou não) sejam atualizados sempre que esse conteúdo mudar. A origem do frame sempre deve estar ligada a um arquivo HTML.");
		$this->mapRegra["1.16"] = new AAARegra(1,"Assegurar a acessibilidade do conteúdo de frames, fornecendo uma página alternativa através do elemento \"noframes\".");
		$this->mapRegra["1.17"] = new AAARegra(1,"Dar a cada frame um título que facilite a identificação dos frames e sua navegação.");
		$this->mapRegra["1.18"] = new AAARegra(1,"Descrever a finalidade dos frames e o modo como se relacionam entre si, se isso não for óbvio a partir unicamente dos títulos, forneça uma descrição mais detalhada.");
		$this->mapRegra["1.19"] = new AAARegra(1,"Assegure a acessibilidade de objetos programados, tais como programas interpretáveis e applets, garantindo que a resposta a eventos seja independente do dispositivo de entrada e que qualquer elemento dotado de interface própria possa funcionar com qualquer leitor de tela ou navegador que o usuário utilize. Evite colocar scripts que estejam vinculados a links, se isso não for possível, fornecer informações equivalentes em uma página alternativa acessível.");
		$this->mapRegra["1.20"] = new AAARegra(1,"Assegurar que todas as páginas possam ser utilizadas mesmo que os programas interpretáveis, os applets ou outros objetos programados tenham sido desativados ou não sejam suportados. Sempre que tiver script associe logo a seguir o elemento \"noscript\".",
			'http://www.w3ca.com.br/portal/acessivel/como-tratar-scripts',
			'Como tratar scripts'
		);
		$this->mapRegra["1.21"] = new AAARegra(1,"Fornecer equivalentes textuais para sons (reproduzidos ou não com interação do usuário), arquivos de áudio independentes, trilhas áudio de vídeo e trechos de vídeo.");
		$this->mapRegra["1.22"] = new AAARegra(1,"Em apresentações multimídia baseadas em tempo (filme ou animação), fornecer ou sincronizar alternativas textuais equivalentes (legendas ou descrições sonoras dos trechos visuais).");
		$this->mapRegra["1.23"] = new AAARegra(1,"Evitar páginas contendo movimento, até que os agentes do usuário possibilitem o controle e a imobilização do conteúdo.");
		$this->mapRegra["1.24"] = new AAARegra(1,"Não sendo possível criar uma página acessível, crie uma página alternativa, juntamente com uma justificativa apropriada, que utilize tecnologias em conformidade com este documento - acessível, que contenha informações (ou funcionalidade) equivalentes e seja atualizada tão freqüentemente quanto a página original, considerada inacessível.");
		$this->mapRegra["2.1"] = new AAARegra(2,"Criar documentos passíveis de validação por gramáticas formais publicadas. Declarando o tipo de documento (atributo \"doctype\") no topo do código fonte de cada página do sítio. Assim seu sítio informará aos servidores, navegadores e validadores que o código está dentro das regras da linguagem utilizada.");
		$this->mapRegra["2.2"] = new AAARegra(2,"Utilizar unidades relativas, e não absolutas, nos valores dos atributos de tabelas, textos, etc. Em CSS não use valores absolutos como \"pt\" ou \"px\" e sim valores relativos como o \"em\", \"ex\" ou em porcentagem.");
		$this->mapRegra["2.3"] = new AAARegra(2,"Marcar corretamente listas e pontos de enumeração em listas ordenadas. Use corretamente a estrutura e os itens das listas. Evite o uso destes elementos para formatar parágrafos.");
		$this->mapRegra["2.4"] = new AAARegra(2,"Não criar páginas com atualização automática periódica, até que os leitores de tela ou navegadores possibilitem o controle da atualização para o usuário. Não utilize a tag meta \"refresh\" ou dispositivos semelhantes para atualização da página. Caso a página seja continuamente atualizada, informe ao usuário que ele deve \"recarregar\" a página de tempos em tempos.");
		$this->mapRegra["2.5"] = new AAARegra(2,"Não utilizar marcações para redirecionar as páginas automaticamente, até que os leitores de tela ou navegadores do usuário possibilitem interromper o processo.",
			'http://www.w3ca.com.br/portal/acessivel/como-redirecionar-paginas',
			'Como redirecionar de forma acessível'
		);
		$this->mapRegra["2.5b"] = new AAARegra(2,"Não utilizar scripts para redirecionar as páginas automaticamente, até que os leitores de tela ou navegadores do usuário possibilitem interromper o processo.",
			'http://www.w3ca.com.br/portal/acessivel/como-redirecionar-paginas',
			'Como redirecionar de forma acessível'
		);
		$this->mapRegra["2.6"] = new AAARegra(2,"Não provocar o aparecimento de janelas de sobreposição, janelas popup ou outras quaisquer, assim como nenhuma modificação do conteúdo sem que o usuário seja informado disso. Não é recomendável para o usuário, que links abram em uma nova janela. Se o usuário utiliza um navegador com tela cheia não poderá voltar para a página anterior, também o histórico e a possibilidade de ir e voltar a páginas visitadas ficam comprometidos. Caso você tenha uma real necessidade que sua página abra uma outra janela, informe ao usuário.");
		$this->mapRegra["2.7"] = new AAARegra(2,"Sempre que existir uma linguagem de marcação apropriada, utilizar marcações em vez de imagens para transmitir informações, um exemplo é a linguagem MathML que permite a criação de fórmulas matemáticas somente utilizando-se das tags apropriadas.");
		$this->mapRegra["2.8"] = new AAARegra(2,"Utilizar o elemento \"blockquote\" para marcar citações quando existentes. Não use \"blockquote\", \"ul\", \"dl\" & \"dt\", \"table\" e outros elementos para criar efeitos visuais nos parágrafos. Caso a intenção seja organizar a estrutura ou a disposição de textos no sítio, utilize folhas de estilo.");
		$this->mapRegra["2.9"] = new AAARegra(2,"Criar um estilo de apresentação coerente e sistemático, ao longo das diferentes páginas, como exemplo, mantendo um padrão de desenho, agrupando os itens do menu de forma coerente. Mantenha os botões principais de navegação no mesmo local em cada página. Isso ajudará ao usuário a localizar-se rapidamente, e saber o destino de cada botão levará. Mantenha para o sítio uma paleta de cores, estilos de texto e diagramação consistente. Identifique as regiões da página, navegação e fim de página de forma clara.");
		$this->mapRegra["2.10"] = new AAARegra(2,"Utilize elementos de cabeçalho de forma lógica, organizando o conteúdo de acordo com uma hierarquia.",
			'http://www.w3ca.com.br/portal/acessivel/como-utilizar-corretamente-tags-h1-h6',
			'Como utilizar corretamente as tags h1 a h6'
		);
		$this->mapRegra["2.11"] = new AAARegra(2,"Sempre que necessário, divida grandes blocos de informação em grupos mais fáceis de gerenciar. As opções de menu devem ser dispostas de forma consistente na mesma ordem relativa no grupo de opções. Se as opções num painel de menu estão ordenadas \"arquivo, editar, inserir, imprimir\", essas opções devem aparecer naquela mesma ordem quando aquele grupo for apresentado novamente (ou quando um outro painel contendo aquele mesmo grupo de opções seja apresentado).");
		$this->mapRegra["2.12"] = new AAARegra(2,"Não utilizar tabelas para efeitos de disposição em página, prefira o uso de folhas de estilo para a diagramação das páginas. Sendo utilizadas tabelas construa de forma que a disposição continue a fazer sentido depois de ser linearizada. Em último caso, forneça um equivalente alternativo (que pode ser uma versão linearizada).");
		$this->mapRegra["2.13"] = new AAARegra(2,"Se for utilizada uma tabela para efeitos de disposição em página, não utilizar qualquer marcação estrutural para efeitos de formatação visual. Não use comandos destinados a indicar cabeçalhos de tabela como o \"th\" para formatar parágrafos ou fazer títulos em \"bold\".");
		$this->mapRegra["2.14"] = new AAARegra(2,"Incluir caracteres pré-definidos de preenchimento nas caixas de edição e nas áreas de texto, até que os navegadores tratem corretamente os controles vazios.");
		$this->mapRegra["2.15"] = new AAARegra(2,"Usar o elemento \"label\" juntamente com o atributo \"id\" para associar os rótulos aos respectivos controles dos formulários. Assim, os leitores de tela associarão os elementos do formulário de forma correta. Usando o comando \"label\" as pessoas que usam leitores de tela não terão problemas ao ler o formulário. Caso haja grupos de informação, controles, etc, a estes devem estar devidamente diferenciados, seja por meio de espaçamento, localização ou elementos gráficos.",
			'http://www.w3ca.com.br/portal/content/como-colocar-label-em-campos-de-formulario',
			'Como colocar "label" em campos de formul&aacute;rios'
		);
		$this->mapRegra["2.16"] = new AAARegra(2,"Assegurar o correto posicionamento de todos os controles de formulários que tenham rótulos implicitamente associados, até que os leitores de tela ou navegadores do suportem associações explícitas entre rótulos e controles de formulários.");
		$this->mapRegra["2.17"] = new AAARegra(2,"Forneça informações sobre como o sítio está estruturado, através de um mapa ou de sumário. Crie o mapa de forma textual, associando aos títulos das páginas para não causar confusão aos usuários que utilizarem leitores de tela.");
		$this->mapRegra["2.18"] = new AAARegra(2,"Assegure a acessibilidade de objetos programados, tais como programas interpretáveis e applets, garantindo que a resposta a eventos seja independente do dispositivo de entrada e que qualquer elemento dotado de interface própria possa funcionar com qualquer leitor de tela ou navegador que o usuário utilize. Evite colocar scripts que estejam vinculados a links. Se isso não for possível, forneça informações equivalentes em uma página alternativa acessível.");
		$this->mapRegra["2.19"] = new AAARegra(2,"Em programas interpretáveis, especificar respostas a eventos, preferindo as rotinas dependentes de dispositivos (mouse, teclado, etc).");
		$this->mapRegra["3.1"] = new AAARegra(3,"Não usar elementos considerados ultrapassados pelo W3C.");
		$this->mapRegra["3.2"] = new AAARegra(3,"Especificar por extenso cada abreviatura ou sigla, quando da sua primeira ocorrência em um documento, utilizando os atributos \"abbr\" e \"acronym\". Utilize o atributo \"abbr\" dentro de um elemento \"th\" quando você tiver cabeçalhos muito longos, para que os leitores de tela lerem apenas o seu conteúdo e não o texto do cabeçalho na íntegra.");
		$this->mapRegra["3.3"] = new AAARegra(3,"Fornecer atalhos por teclado que apontem para links importantes (incluindo os contidos em mapas de imagem armazenados no cliente), para início da área principal de conteúdo da página, controles de formulários, e grupo de controles de formulários.");
		$this->mapRegra["3.4"] = new AAARegra(3,"Inserir, entre links adjacentes, caracteres que não funcionem como link e sejam passíveis de impressão (como um espaço), até que os leitores de tela ou navegadores (incluindo as tecnologias de apoio) reproduzam clara e distintamente os links adjacentes.");
		$this->mapRegra["3.5"] = new AAARegra(3,"Sempre que possível, fornecer informações que possibilitem aos usuários receber os documentos de acordo com as suas preferências (por ex., por idioma ou por tipo de conteúdo).");
		$this->mapRegra["3.6"] = new AAARegra(3,"Fornecer barras de navegação para auxiliar os menus de navegação. Utilizar elemento que contextualizem a localização do usuário, como barras de caminho e \"Sua Localização\" nas páginas do documento.");
		$this->mapRegra["3.7"] = new AAARegra(3,"Agrupar links relacionados entre si, identificando o grupo (em benefício do navegador ou leitor de tela do usuário) e, até que o navegador ou leitor de tela do usuário se encarregue de tal função, fornecer um modo de contornar determinado grupo.");
		$this->mapRegra["3.8"] = new AAARegra(3,"Se forem oferecidas funções de pesquisa, ativar diferentes tipos de pesquisa de modo a corresponderem a diferentes níveis de competência e às preferências dos usuários. Sendo possível, quando a pesquisa não encontrar a palavra, sugerir palavras semelhantes.");
		$this->mapRegra["3.9"] = new AAARegra(3,"Use palavras relevantes no início de cabeçalhos, parágrafos, e listas para identificar o assunto tratado.");
		$this->mapRegra["3.10"] = new AAARegra(3,"Fornecer informações sobre documentos compostos por várias páginas (isto é, coleções de documentos). Caso seja necessário, utilize ferramentas de compactação de arquivo, tais como ZIP, TAR, GZIP ou ARJ. Informe o tamanho do arquivo e o tempo estimado para baixar por meio de um modem comum. Forneça documentos em formatos alternativos, passíveis de leitura pelos leitores de tela.");
		$this->mapRegra["3.11"] = new AAARegra(3,"Complementar o texto com apresentações gráficas ou sonoras, sempre que puderem facilitar a compreensão da página.");
		$this->mapRegra["3.12"] = new AAARegra(3,"Identificar claramente o destino de cada link, botão ou elemento que submeta uma ação. Prefira utilizar textos mais claros e objetivos, mostrando o verdadeiro sentido e o destino do link. Evite usar frases como \"Clique aqui\".");
		$this->mapRegra["3.13"] = new AAARegra(3,"Informar previamente ao usuário o destino e resultado da ação, quando houver campos e elementos do formulário, como, por exemplo, caixas de seleção, que submetem automaticamente o conteúdo ao se efetuar uma determinada seleção. Nestes casos, ao invés da seleção submeter automaticamente o formulário, é recomendável que se vincule ao elemento um botão para efetuar a ação.");
		$this->mapRegra["3.14"] = new AAARegra(3,"Forneça metadados para acrescentar informações semânticas e descritivas do sítio, que sejam úteis para os mecanismos de busca.");
		
		//Regras especificas
		$this->mapRegra["4.1"] = new AAARegra(3,"Não faça atalhos \"accesskey\" que entrem em conflito com o Internet Explorer.");
		
	}
}